home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Wayzata's Best of Shareware PC/Windows 2
/
Wayzata's Best of Shareware 2.0 (Windows) (Wayzata Technology)(7112)(1994).bin
/
pc
/
dos
/
programg
/
forthcmp
/
exec.4th
< prev
next >
Wrap
Text File
|
1992-03-29
|
2KB
|
62 lines
\ DOS EXECUTE LIBRARY
\ Contents Copyright (C) 1991 by Thomas Almy
\ Permission is granted to registered users of ForthCMP to sell or distribute
\ computer programs incorporating the compiled contents of this file.
\ This file should be loaded at the start of the program. The
\ STRINGS library must be loaded, and loaded before this file.
.( Loading EXEC) CR
10 HEX
DSEG
CREATE xpb 0E ALLOT
0 xpb ! -1 xpb 6 + ! -1 xpb 8 + ! -1 xpb 0A + ! -1 xpb 0C + !
CSEG
CREATE ssav 0 , 0 ,
DSEG
\ the code for exec could be optimized based on SEPSSEG? and SEPDSEG?
\ either or both being off, but it would not make that much difference
\ in code size.
\ code 9C is PUSHF, 9D is POPF
1 0 IN/OUT
CODE exec
BP PUSH CSEG 9C C, DS PUSHSEG
AX DX MOV
CS: ssav 2+ [] SS <SEG SP CS: ssav [] MOV
AX DS <SEG AX ES >SEG
4B00 # AX MOV
xpb # BX MOV
21 INT
CS: ssav 2+ [] SS >SEG
CS: ssav [] SP MOV
DS POPSEG 9D C, BP POP RET
END-CODE
1 0 IN/OUT
SEPDSEG? #IF
: EXEC
" COMSPEC" STR>DSEG getenv ?DUP IF
ASCIIZ
SWAP DUP C@ IF \ program to run
" /C " STR>DSEG COUNT ROT COUNT STRCAT STRPCK
ELSE STR>DSEG THEN
ASCIIZ xpb 2+ ! ?DS: xpb 4 + !
exec
ELSE ." No COMSPEC" BYE THEN ;
#ELSE
: EXEC
" COMSPEC" getenv ?DUP IF
ASCIIZ
SWAP DUP C@ IF \ program to run
" /C " COUNT ROT COUNT STRCAT STRPCK
ELSE DROP " " THEN
ASCIIZ xpb 2+ ! ?DS: xpb 4 + !
exec
ELSE ." No COMSPEC" BYE THEN ;
#THEN
0A = #IF DECIMAL #THEN